//
// Created by Mzoro on 2022/4/3.
//
#include <stdio.h>
#include "headers.h"

// 行最大长度
#define LINE_MAX_SIZE  1000

int readLines(char *c[]) {
    // has 是否还有读到了一行
    // total 一共读到了几行
    int has, total;
    // 读到的文字保存在这里
    char *line;

    total = 0;


    while ( (line = alloc(LINE_MAX_SIZE)) && (has = readline(line))) {
        // 这里应该申请新的 line ，要不总在同一内存区操作，后面会覆盖前面
        *(c + (total++)) = line;
    }

    aFree(line);

    return total;
}

int readline(char *line) {
    static char buffer;

    // 读取字符
    char c;
    // line 的指针
    int i;

    i = 0;
    if (buffer == EOF) {
        // 说明刚才读到了结束
        return 0;
    } else if( buffer != '\0') {
        // 到这里是因为上次读取超过最大长度，没有读完
        *(line + (i++)) = buffer;
    }

    while ((c = getchar()) != EOF && c != '\n') {
        if (i == LINE_MAX_SIZE) {
            printf("超过最大长度 %d , 截取。", LINE_MAX_SIZE);
            buffer = c;
            *(line + (i++)) = '\n';
            return 1;
        }
        *(line + (i++)) = c;
    }

    if (c == EOF) {
        return 0;
    }
    *(line + (i++)) = '\n';
    *(line + i) = '\0';
    return 1;
}
